package com.example.aircraftticketingsystemserver.mapper;

import com.example.aircraftticketingsystemserver.entity.Flight;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.aircraftticketingsystemserver.entity.Ticket;
import com.example.aircraftticketingsystemserver.entity.TransferFlight;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author lxz
 * @since 2024-08-05
 */
@Mapper
public interface FlightsMapper extends BaseMapper<Flight> {
    /**
     * 添加航班
     */
    void addFlight(Flight flight);
    /**
     * 添加航班对应的机票
     */
    void addTicketByFlightId(Ticket ticket);
    /**
     * 删除航班（单个）
     */
    void deleteFlightByFlightId(Integer flightId);
    /**
     * 删除航班（批量）
     */
    void batchDeleteFlight(List<Integer> flightsId);
    /**
     * 更新航班
     */
    void updateFlight(Flight flight);
    /**
     * 查询航班（多条件查询）
     * 航班号
     * 航空公司
     * 时间范围
     * 起始地
     * 目的地
     * 起始机场
     * 目的机场
     */
    List<Flight> getFlightsByParams(@Param("flightNumber") String flightNumber,
                                    @Param("airline")String airline,
                                    @Param("departureCity")String departureCity,
                                    @Param("arrivalCity")String arrivalCity,
                                    @Param("departureAirport")String departureAirport,
                                    @Param("arrivalAirport")String arrivalAirport,
                                    @Param("status") String status,
                                    @Param("start") Date start,
                                    @Param("end")Date end);

    /**
     * 查询中转航班
     */
    List<TransferFlight> findTransferFlights(String departureCity,String arrivalCity);
}
